var express = require('express');
var router = express.Router(); 
var sql = require('./../sql/index');
var Cart = require('./../sql/cart');
var xlsx = require('node-xlsx');
var uuid = require('node-uuid');
var utils = require('./../utils');
var Pro=require('./../sql/pro')


router.get('/add', (req, res, next) => {
    let { userid, proid, num } = req.query;
    num = num * 1 || 1;
    sql.find(Cart, { userid, proid }, { _id: 0 }).then(data => {
        if (data.length === 0) {
            sql.insert(Cart, {
                cartid: 'cart_' + uuid.v1(),
                userid: userid,
                proid: proid,
                num:num
            }).then(() => {
                res.send({
                    code: '200',
                    mess:'加入购物车成功'
                })
            })
        } else {
            sql.update(Cart, { userid, proid }, { $inc: { num: 1 } }).then(() => {
                res.send({
                    code: '200',
                    mess:"更新了购物车"
                })
            })
        }
    })
})
// 查询购物车数据  ---- 依据用户id获取购物车的数据，依据 产品id获取产品的信息，然后组合数据，输出数据
// router.get('/', function(req, res, next) {
//   // 1、获取用户id
//   let { userid } = req.query;
//   // 2、依据用户id查询购物车的数据
//   sql.find(Cart, { userid }, { _id: 0 }).then(data => {
//     // 如果没有数据，告诉用户没有数据
//     if (data.length === 0) {
//       // 2.1 没有数据
//       res.send(utils.cartnull)
//     } else {
//       // 2.2  有数据,遍历数据，获取数据的基本信息，组合数据
//       new Promise(resolve => { // 2.2.1内含异步操作
//         let arr = []
//         data.map((item, index) => { // 2.2.2遍历数据
//           // 2.2.3 依据产品的id查询数据的相关信息
//           sql.find(Pro, { proid: item.proid }, { _id: 0 }).then(data1 => {
//             // console.log(data1)
//             // 2.2.4 组合数据
//             arr.push({
//               cartid: item.cartid,
//               userid: userid,
//               proid: item.proid,
//               title: data1[0].title,
//               proimg: data1[0].proimg,
//               price: data1[0].price,
//               num: item.num
//             })
//             // 2.2.5 遍历所有的数据结束
//             if (index >= data.length - 1) {
//               resolve(arr)
//             }
//           })
//         })
//       }).then((arr) => {
//         // 2.2.6 返回购物车数据结果
//         res.send({
//           code: '200',
//           message: '获取购物车列表的数据',
//           length: arr.length,
//           data: arr
//         })
//       })
      
//     }
//   })
// });
router.get('/', function(req, res, next) {
    // 1、获取用户id
    let { userid } = req.query;
    let cartarr = []
    // 2、依据用户id查询购物车的数据
    sql.find(Cart, { userid }, { _id: 0 }).then(data => {
      // 如果没有数据，告诉用户没有数据
      if (data.length === 0) {
        // 2.1 没有数据
        res.send('没有数据')
      } else {
        cartarr = data
        let promise1 = data.map(item => {
          return sql.find(Pro, { proid: item.proid}, { _id: 0})
        })
        return Promise.all(promise1)
      }
    }).then(list => {
      console.log('list', list)
      console.log('cartarr', cartarr)
      let arr = []
      list.map((item, index) => {
        arr.push({
          proid: item[0].proid,
          title: item[0].title,
          proimg: item[0].proimg,
          price: item[0].price,
          brand: item[0].brand,
          cartid: cartarr[index].cartid,
          userid: cartarr[index].userid,
          num: cartarr[index].num
        })
      })
      res.send({
        code: '200',
        data: arr
      })
    })
  });
router.get('/delete', (req, res, next) => {
    let { userid, proid } = req.query;
    sql.delete(Cart, { userid, proid }).then(() => {
        res.send("删除成功")
    })
})
router.get('/updata', (req, res, next) => {
    let { cartid, num } = req.query;
    sql.update(Cart, { cartid }, { $set: { num: num } }).then(() => {
        res.send('更新数据成功')
    })
})

module.exports = router;